Next | Prev | Up | Top | Contents | Index

Page Validation

Although an address is defined, the corresponding page is not necessarily loaded in physical memory. The sum of the address spaces of all processes is normally far larger than available real memory. IRIX keeps selected pages in real memory. A page that is not present in real memory is marked as "invalid" in the page tables. Invalid pages can be any of the following:

Text

Pages of program text--executable code of programs and dynamically-linked libraries--can be retrieved on demand from the program file or library files on disk.

Data

Pages of data from the heap and stack can be retrieved from the swap partition or file on disk.

Never used

Pages that have been defined but never used can be created as pages of binary zero when needed.
When your process refers to a VPN that is defined but invalid, a hardware interrupt occurs. The interrupt handler chooses a page of physical memory to hold your page. In order to acquire a memory page, it might have to invalidate some other page belonging to your process or to another process. The contents of the needed page are retrieved from the appropriate backing store, and your process continues to execute.

Page validation takes from 10 to 50 milliseconds, a delay that a real-time program normally cannot tolerate.

The total size of all the valid pages in an address space is displayed by the ps command under the heading SZ. The aggregate size of the pages that are actually in memory is the resident set size, displayed by ps under the heading RSS.


Next | Prev | Up | Top | Contents | Index